home *** CD-ROM | disk | FTP | other *** search
/ MacGames Sampler / PHT MacGames Bundle.iso / MacSource Folder / Samples from the CD / Modula / Modula-2 shell < prev   
Text File  |  1986-05-21  |  27KB  |  814 lines

  1. /* Written  4:43 pm  May  8, 1986 by bobc@tikal.UUCP in uiucdcsb:net.sources.mac */
  2. /* ---------- "ETHZ Standalone Definition Modules" ---------- */
  3. # The rest of this file is a shell script which will extract:
  4. # ResourceManager.DEF SFPackage.DEF SYSTEMX.DEF ScrapManager.DEF
  5. # Storage.DEF Streams.DEF Terminal.DEF TextEdit.DEF Toolbox.DEF
  6. # WindowManager.DEF
  7. echo x - ResourceManager.DEF
  8. cat >ResourceManager.DEF <<'!Funky!Stuff!'
  9. DEFINITION MODULE ResourceManager;
  10.  
  11. FROM SYSTEM IMPORT ADDRESS;
  12. FROM MacSYSTEM IMPORT LONGINT,Handle;
  13.  
  14. EXPORT QUALIFIED
  15. (*CONST*)
  16.     (* Resource attributes *)
  17.         resSysRef,resSysHeap,resPurgeable,resLocked,resProtected,
  18.         resPreload,resChanged,
  19.     (* Resource Manager Result codes *)
  20.         resNotFound,resFNotFound,addResFailed,addRefFailed,rmvResFailed,
  21.         rmvRefFailed,
  22.     (* Resource file attributes *)
  23.         mapReadOnly,mapCompact,mapChanged,
  24. (*TYPE*)
  25.     ResType,ParamResType,
  26. (*VAR*)
  27.     CurMap,CurApRefNum,SysMap,SysResName,SysMapHndl,TopMapHndl,ResLoad,
  28.     ResErr,
  29. (*PROC*)
  30.     CreateResFile,OpenResFile,CloseResFile,
  31.     ResError,
  32.     CurResFile,HomeResFile,UseResFile,
  33.     CountTypes,GetIndType,
  34.     SetResLoad,CountResources,GetIndResource,GetResource,
  35.     GetNamedResource,LoadResource,ReleaseResource,DetachResource,
  36.     UniqueID,GetResInfo,GetResAttrs,SizeResource,
  37.     SetResInfo,SetResAttrs,ChangedResource,AddResource,
  38.     RmveResource,UpdateResFile,WriteResource,SetResPurge,
  39.     GetResFileAttrs,SetResFileAttrs;
  40. CONST
  41.     (* Resource attributes *)
  42.     resSysRef       = 128;  (* set if system reference      *)
  43.     resSysHeap  = 64;   (* set if read into system heap *)
  44.     resPurgeable    = 32;   (* set if purgeable             *)
  45.     resLocked       = 16;   (* set if locked                *)
  46.     resProtected    = 8;    (* set if protected             *)
  47.     resPreload      = 4;    (* set if to be preloaded       *)
  48.     resChanged  = 2;    (* set if to be written to res file *)
  49.     
  50.     (* Resource Manager Result codes *)
  51.     resNotFound = -192; (* resource not found           *)
  52.     resFNotFound    = -193; (* resource file not found      *)
  53.     addResFailed    = -194; (* AddResource failed           *)
  54.     addRefFailed    = -195; (* AddReference failed          *)
  55.     rmvResFailed    = -196; (* RmveResource failed          *)
  56.     rmvRefFailed    = -197; (* RmveReference failed         *)
  57.     
  58.     (* Resource file attributes *)
  59.     
  60.     mapReadOnly     = 128;  (* set if file is read-only     *)
  61.     mapCompact      = 64;   (* set to compact file on update*)
  62.     mapChanged      = 32;   (* set to write map on update   *)
  63.     
  64. TYPE
  65.     ResType = ARRAY [0..3] OF CHAR;
  66.     ParamResType = RECORD
  67.         CASE INTEGER OF
  68.         0:
  69.             res:ResType
  70.         | 1:
  71.             param:LONGINT
  72.         END
  73.     END;
  74.  
  75. VAR
  76.     TopMapHndl[0A50H]:  Handle;
  77.     SysMapHndl[0A54H]:  Handle;
  78.     SysMap[0A58H]:      CARDINAL;
  79.     CurMap[0A5AH]:      CARDINAL;
  80.     ResLoad[0A5EH]:     BOOLEAN;
  81.     ResErr[0A60H]:      INTEGER;
  82.     CurApRefNum[0900H]: CARDINAL;
  83.     SysResName[0AD8H]:  ARRAY [0..20] OF CHAR;
  84.  
  85.  
  86. (* Opening and Closing Resource Files *)
  87. PROCEDURE CreateResFile(VAR fileName:ARRAY OF CHAR);
  88. PROCEDURE OpenResFile(VAR fileName:ARRAY OF CHAR):INTEGER;
  89. PROCEDURE CloseResFile(refNum:INTEGER);
  90.  
  91. (* Checking for Errors *)
  92. PROCEDURE ResError():INTEGER;
  93.  
  94. (* Setting the Current Resource File *)
  95. PROCEDURE CurResFile():INTEGER;
  96. PROCEDURE HomeResFile(theResource:Handle):INTEGER;
  97. PROCEDURE UseResFile(refNum:INTEGER);
  98.  
  99. (* Getting Resource Types *)
  100. PROCEDURE CountTypes():INTEGER;
  101. PROCEDURE GetIndType(VAR theType:ResType;index:INTEGER);
  102.  
  103. (* Getting and Disposing of Resources *)
  104. PROCEDURE SetResLoad(load:BOOLEAN);
  105. PROCEDURE CountResources(theType:ResType):INTEGER;
  106. PROCEDURE GetIndResource(theType:ResType;index:INTEGER):Handle;
  107. PROCEDURE GetResource(theType:ResType;theID:INTEGER):Handle;
  108. PROCEDURE GetNamedResource(theType:ResType;VAR name:ARRAY OF CHAR):Handle;
  109. PROCEDURE LoadResource(theResource:Handle);
  110. PROCEDURE ReleaseResource(theResource:Handle);
  111. PROCEDURE DetachResource(theResource:Handle);
  112.  
  113. (* Getting Resource Information *)
  114. PROCEDURE UniqueID(theType:ResType):INTEGER;
  115. PROCEDURE GetResInfo(theResource:Handle;VAR theID:INTEGER;
  116.     VAR theType:ResType; VAR name:ARRAY OF CHAR);
  117. PROCEDURE GetResAttrs(theResource:Handle):INTEGER;
  118. PROCEDURE SizeResource(theResource:Handle):LONGINT;
  119.  
  120. (* Modifying Resources *)
  121. PROCEDURE SetResInfo(theResource:Handle; theID:INTEGER;VAR name:ARRAY OF CHAR);
  122. PROCEDURE SetResAttrs(theResource:Handle;attrs:INTEGER);
  123. PROCEDURE ChangedResource(theResource:Handle);
  124. PROCEDURE AddResource(theData:Handle;theType:ResType;theID:INTEGER;
  125.     VAR name:ARRAY OF CHAR);
  126. PROCEDURE RmveResource(theResource:Handle);
  127. PROCEDURE UpdateResFile(refNum:INTEGER);
  128. PROCEDURE WriteResource(theResource:Handle);
  129. PROCEDURE SetResPurge(install:BOOLEAN);
  130.  
  131. (* Advanced Routines *)
  132. PROCEDURE GetResFileAttrs(refNum:INTEGER):INTEGER;
  133. PROCEDURE SetResFileAttrs(refNum:INTEGER;attrs:INTEGER);
  134.  
  135. END ResourceManager.
  136. !Funky!Stuff!
  137. echo x - SFPackage.DEF
  138. cat >SFPackage.DEF <<'!Funky!Stuff!'
  139. DEFINITION MODULE SFPackage;
  140.  
  141. FROM    SYSTEM      IMPORT  ADDRESS,WORD;
  142. FROM    QuickDraw       IMPORT  Point;
  143. FROM    FileTypes   IMPORT  OSType,ParamBlkPtr;
  144. FROM    DialogManager   IMPORT  DialogPtr;
  145. EXPORT QUALIFIED    putDlgID,getDlgID,SFReply,SFTypeList,
  146.     SFPutFile,SFPPutFile, SFGetFile,SFPGetFile,
  147.     putSave ,putCancel,putEject ,putDrive ,putName,
  148.     getOpen,getCancel,getEject,getDrive,getScroll,
  149.     getNmList,MyDlgType,MyFileFilterType,NoFileFilter,NoDlg,
  150.     UseDlg,UseFileFilter;
  151.  
  152. (* constants for Standard File package *)
  153. CONST
  154.     putDlgID    =   -3999;  (*   SFPutFile dialog template ID} *)
  155.     getDlgID    =   -4000;  (*   SFGetFile dialog template ID} *)
  156.  
  157.     putSave =   1;          (*   save button} *)
  158.     putCancel   =   2;          (*   cancel button} *)
  159.     putEject    =   5;          (*   eject button} *)
  160.     putDrive    =   6;          (*   drive button} *)
  161.     putName =   7;          (*   editTExt item for file name} *)
  162.  
  163.     getOpen =   1;          (*   open button} *)
  164.     getCancel   =   3;          (*  cancel button} *)
  165.     getEject    =   5;          (*   eject button} *)
  166.     getDrive    =   6;          (*   drive button} *)
  167.     getNmList   =   7;          (*   userItem for file name list} *)
  168.     getScroll   =   8;          (*  userItem for scroll bar} *)
  169.  
  170. TYPE
  171.     SFReply = RECORD
  172.         good:    BOOLEAN;  (*   ignore command if FALSE} *)
  173.         copy:    BOOLEAN;  (*  not used} *)
  174.         fType:   OSType;   (*   file type or not used} *)
  175.         vRefNum: INTEGER;  (*   volume reference number} *)
  176.         version: INTEGER;  (*   file's version number} *)
  177.         fName:   ARRAY [0..63] OF CHAR
  178.     END; (* SFReply *)
  179.     
  180.     SFTypeList = ARRAY[0..3] OF OSType;
  181.  
  182.     MyDlgType           =   PROCEDURE(INTEGER,DialogPtr):INTEGER;
  183.     MyFileFilterType    =   PROCEDURE(ParamBlkPtr):BOOLEAN;
  184.  
  185. PROCEDURE NoDlg():ADDRESS;
  186. PROCEDURE UseDlg(Dlg:MyDlgType):ADDRESS;
  187.  
  188. PROCEDURE NoFileFilter():ADDRESS;
  189. PROCEDURE UseFileFilter(FileFilter:MyFileFilterType):ADDRESS;
  190.  
  191. PROCEDURE SFPutFile(lefttop:Point;
  192.                     VAR prompt: ARRAY OF CHAR; VAR origName: ARRAY OF CHAR;
  193.                     dlgHook: ADDRESS; VAR reply: SFReply);
  194.  
  195. PROCEDURE SFPPutFile(lefttop:Point;
  196.                      VAR prompt: ARRAY OF CHAR; VAR origName: ARRAY OF CHAR;
  197.                      dlgHook: ADDRESS; VAR reply: SFReply; dlgID: INTEGER;
  198.                      filterProc: ADDRESS);
  199.  
  200. PROCEDURE SFGetFile(lefttop:Point;
  201.                     VAR prompt: ARRAY OF CHAR;    fileFilter: ADDRESS;
  202.                       numTypes: INTEGER; VAR typeList: SFTypeList;
  203.                        dlgHook: ADDRESS; VAR    reply: SFReply);
  204.  
  205. PROCEDURE SFPGetFile(lefttop:Point;
  206.                      VAR prompt: ARRAY OF CHAR;    fileFilter: ADDRESS;
  207.                        numTypes: INTEGER; VAR typeList: SFTypeList;
  208.                         dlgHook: ADDRESS; VAR    reply: SFReply;
  209.                           dlgID: INTEGER;   filterProc: ADDRESS);
  210. END  SFPackage.
  211. !Funky!Stuff!
  212. echo x - SYSTEMX.DEF
  213. cat >SYSTEMX.DEF <<'!Funky!Stuff!'
  214. DEFINITION MODULE SYSTEMX;
  215.  
  216. FROM SYSTEM IMPORT ADDRESS,PROCESS;
  217.  
  218. EXPORT QUALIFIED SaveA5,SaveA6,SaveA7,SaveA0,
  219.         DoCASE,DoHALT,CheckStack,NEWPROCESS,TRANSFER,IOTRANSFER,
  220.         SYSProc7,SYSLongMult,SYSLongDivMod,SYSLongIntMult,SYSProc11,
  221.         SYSRealAdd,SYSRealSub,SYSRealMult,SYSRealDiv,SYSRealCMP,
  222.         SYSRealTST,SYSRealFLOAT,SYSRealTRUNC;
  223. VAR
  224.     SaveA5,SaveA7,SaveA6,SaveA0:ADDRESS;
  225.  
  226. PROCEDURE DoCASE;               (* 1 *)
  227. PROCEDURE DoHALT;               (* 2 *)
  228. PROCEDURE CheckStack;           (* 3 *)
  229. PROCEDURE NEWPROCESS;       (* 4 *)
  230. PROCEDURE TRANSFER;         (* 5 *)
  231. PROCEDURE IOTRANSFER(p1,p2:PROCESS; via:ADDRESS);       (* 6 *)
  232. PROCEDURE SYSProc7;         (* 7 *)
  233. (* IF D0 = 2 THEN LISTEN ELSIF D0 = 3 THEN SYSRESET END *)
  234. PROCEDURE SYSLongMult;          (* 8 *)
  235. PROCEDURE SYSLongDivMod;            (* 9 *)
  236. PROCEDURE SYSLongIntMult;           (* 10 *)
  237. PROCEDURE SYSProc11;            (* 11 *)
  238. PROCEDURE SYSRealAdd;           (* 12 *)
  239. PROCEDURE SYSRealSub;           (* 13 *)
  240. PROCEDURE SYSRealMult;          (* 14 *)
  241. PROCEDURE SYSRealDiv;           (* 15 *)
  242. PROCEDURE SYSRealCMP;           (* 16 *)
  243. PROCEDURE SYSRealTST;           (* 17 *)
  244. PROCEDURE SYSRealFLOAT;     (* 18 *)
  245. PROCEDURE SYSRealTRUNC;         (* 19 *)
  246.  
  247. END SYSTEMX.
  248. !Funky!Stuff!
  249. echo x - ScrapManager.DEF
  250. cat >ScrapManager.DEF <<'!Funky!Stuff!'
  251. DEFINITION MODULE ScrapManager;
  252.  
  253. FROM MacSYSTEM IMPORT LONGINT,Handle,StringPtr;
  254. FROM ResourceManager IMPORT ResType;
  255. FROM SYSTEM IMPORT ADDRESS;
  256. EXPORT QUALIFIED noScrapErr,noTypeErr,PScrapStuff,ScrapStuff,
  257.     InfoScrap,UnloadScrap,LoadScrap,ZeroScrap,PutScrap,GetScrap,
  258.     ScrapSize,ScrapHandle,ScrapCount,ScrapState,ScrapName;
  259.     
  260. CONST
  261.     noScrapErr  = -100; (* desk scrap isn't initialized *)
  262.     noTypeErr       = -102; (* no data of the requested type *)
  263.  
  264. TYPE
  265.     PScrapStuff =   POINTER TO ScrapStuff;
  266.     ScrapStuff  =   RECORD
  267.             scrapSize:      LONGINT;    (* size of desk scrap *)
  268.             scrapHandle:    Handle; (* handle to desk scrap *)
  269.             scrapCount: INTEGER;    (* count changed by ZeroScrap *)
  270.             scrapState: INTEGER;    (* tells where desk scrap is *)
  271.             scrapName:  StringPtr;  (* scrap file name *)
  272.         END;
  273. VAR
  274.     ScrapSize[0960H]:       LONGINT;
  275.     ScrapHandle[0964H]:     Handle;
  276.     ScrapCount[0968H]:      INTEGER;
  277.     ScrapState[096AH]:      INTEGER;
  278.     ScrapName[096CH]:       StringPtr;
  279.  
  280. PROCEDURE InfoScrap():PScrapStuff;
  281.  
  282. PROCEDURE UnloadScrap():LONGINT;
  283. PROCEDURE LoadScrap():LONGINT;
  284.  
  285. PROCEDURE ZeroScrap():LONGINT;
  286. PROCEDURE PutScrap(length: LONGINT; theType: ResType; source: ADDRESS):LONGINT;
  287.  
  288. PROCEDURE GetScrap(hDest:Handle;theType: ResType; VAR offset: LONGINT):LONGINT;
  289.  
  290. END ScrapManager.
  291. !Funky!Stuff!
  292. echo x - Storage.DEF
  293. cat >Storage.DEF <<'!Funky!Stuff!'
  294. DEFINITION MODULE Storage;
  295. (* to be used unchanged for MacIntosh by Franz Kronseder 30.01.85 *)
  296. (*  Modified for standalone MacIntosh Code By Bob Campbell 10.02.86 
  297.  * The Implementation now used the A-Line calls to the memory manager
  298.  *  All of the storage allocated is set to zero.  The Calls CreateHeap,
  299.  *  and DestroyHeap have been removed.
  300.  *)
  301.  
  302. FROM SYSTEM IMPORT ADDRESS;
  303.  
  304. EXPORT QUALIFIED
  305.   ALLOCATE, DEALLOCATE, Available;
  306.  
  307. PROCEDURE ALLOCATE (VAR addr : ADDRESS; amount : CARDINAL);
  308.  (* allocates the requested amount of memory (in bytes) and returns the     *)
  309.  (* starting address . Return NIL if the amount is not available                *)
  310.  
  311. PROCEDURE DEALLOCATE (VAR addr : ADDRESS; amount : CARDINAL);
  312.  (* deallocates the given amount of memory (in bytes).                      *)
  313.  
  314. PROCEDURE Available (amount : CARDINAL) : BOOLEAN;
  315.  (* returns TRUE if an ALLOCATE of the specified amount (in bytes)  *)
  316.  (* of memory would be possible                                         *)
  317.  
  318. END Storage.
  319.  
  320. !Funky!Stuff!
  321. echo x - Streams.DEF
  322. cat >Streams.DEF <<'!Funky!Stuff!'
  323. DEFINITION MODULE Streams;
  324.  
  325. (*
  326.  *  Modified from the  book "PROGRAMMING IN
  327.  *  MODULA-2" by Miklaus Wirth Edited by
  328.  *  David Gries pages 103 and 104.
  329.  *)
  330.  
  331. FROM SYSTEM IMPORT WORD,ADDRESS;
  332. FROM MacSYSTEM IMPORT LONGINT;
  333. FROM FileTypes IMPORT ParamBlkRec,OSType;
  334.  
  335. EXPORT QUALIFIED
  336.     STREAM,OpenMode,Open,Close,Create,
  337.     WriteWord,WriteChar,WriteBuffer,
  338.     ReadWord,ReadChar,ReadBuffer,
  339.     EOS,Reset,SetPos,GetPos,eolc;
  340.  
  341. CONST
  342.     eolc    =   15C;
  343.     
  344. TYPE 
  345.     STREAM  =   POINTER TO StreamRec;
  346.  
  347.     StreamRec = RECORD
  348.         IsOpen  :   BOOLEAN;
  349.         Buffer  :   ADDRESS;
  350.         FileNum :   INTEGER;
  351.         EOSPos  :   LONGINT;
  352.         CurrentPos  :   LONGINT;
  353.         PB      :   ParamBlkRec;
  354.     END;
  355.     
  356.  
  357.     OpenMode    =   (ReadOnly,WriteOnly,ReadWrite);
  358.     OSType  =   ARRAY [0..3] OF CHAR;
  359.  
  360. PROCEDURE Open(VAR file:STREAM; VAR Name:ARRAY OF CHAR;vref:INTEGER;
  361.     Mode:OpenMode);
  362. PROCEDURE Create(VAR Name:ARRAY OF CHAR;vRef:INTEGER;
  363.     creator,type:OSType);
  364. PROCEDURE Close(s:STREAM);
  365. PROCEDURE WriteWord(s:STREAM;w:WORD);
  366. PROCEDURE WriteChar(s:STREAM;c:CHAR);
  367. PROCEDURE WriteBuffer(s:STREAM;b:ADDRESS;len:LONGINT):LONGINT;
  368. PROCEDURE ReadWord(s:STREAM;VAR w:WORD);
  369. PROCEDURE ReadChar(s:STREAM;VAR c:CHAR);
  370. PROCEDURE ReadBuffer(s:STREAM;b:ADDRESS;len:LONGINT):LONGINT;
  371. PROCEDURE EOS(s:STREAM):BOOLEAN;
  372. PROCEDURE Reset(s:STREAM);
  373. PROCEDURE SetPos(s:STREAM;pos:LONGINT);
  374. PROCEDURE GetPos(s:STREAM;VAR pos:LONGINT);
  375.     
  376. END Streams.
  377. !Funky!Stuff!
  378. echo x - Terminal.DEF
  379. cat >Terminal.DEF <<'!Funky!Stuff!'
  380. DEFINITION MODULE Terminal;
  381. (*  A.Wespisser, 20-NOV-84
  382.  *---------------------------
  383.  *  J.Wyttenbach,   11-jan-85
  384.  *  B.Campbell, 10-FEB-86
  385.  *
  386.  *  NOTE:   -   The procedures "KeyPress" and "GotoXY" and "ClearTerminal" are
  387.  *              not contained in module "Terminal" on SMAKY8.
  388.  *          -   "BusyRead", "ReadString", "KeyPress" and "GotoXY" and
  389.  *              "ClearTerminal" are not required by the compiler itself.
  390.  *)
  391.  
  392. EXPORT QUALIFIED Write, WriteString, WriteLn, Read, ReadString, ReadLn,
  393.         BusyRead, ReadAgain,KeyPress, GotoXY, ClearTerminal;
  394.  
  395. PROCEDURE Write (ch: CHAR);
  396. PROCEDURE WriteString(VAR s:ARRAY OF CHAR);
  397. PROCEDURE WriteLn; (*terminate line*)
  398. PROCEDURE Read(VAR ch:CHAR);
  399. PROCEDURE ReadString(VAR s:ARRAY OF CHAR);
  400. PROCEDURE ReadLn (VAR s:ARRAY OF CHAR);
  401. PROCEDURE BusyRead(VAR ch:CHAR);
  402. PROCEDURE ReadAgain;
  403. (* causes the last character read to be returned again
  404.  * upon the next call of Read
  405.  *)
  406. PROCEDURE KeyPress():BOOLEAN;
  407. PROCEDURE GotoXY(x,y:CARDINAL); (* Move to column x, row y *)
  408. PROCEDURE ClearTerminal;
  409. END Terminal.
  410.         
  411.         
  412. !Funky!Stuff!
  413. echo x - TextEdit.DEF
  414. cat >TextEdit.DEF <<'!Funky!Stuff!'
  415. DEFINITION MODULE TextEdit;
  416.  
  417. FROM SYSTEM IMPORT ADDRESS;
  418. FROM MacSYSTEM IMPORT Handle,LONGINT,OSErr;
  419. FROM QuickDraw IMPORT Style,Rect,Point,GrafPtr;
  420.  
  421. EXPORT QUALIFIED 
  422.     teJustLeft,teJustCenter,teJustRight,
  423.     CharsHandle,CharsPtr,Chars,TEHandle,TEPtr,
  424.     TERec,
  425.     DoubleTime,CaretTime,TEScrpHandle,TEScrpLength,
  426.     TENew,TEDispose,TESetText,TEGetText,
  427.     TEIdle,TEClick,TESetSelect,TEActivate,TEDeactivate,
  428.     TEKey,TECut,TECopy,TEPaste,TEDelete,TEInsert,
  429.     TESetJust,TEUpdate,TextBox,TEScroll,
  430.     TEFromScrap,TEToScrap,TEScrapHandle,TEGetScrapLen,TESetScrapLen,
  431.     SetWordBreak,SetClikLoop,TECalText;
  432.  
  433. CONST
  434.   teJustLeft    = 0;
  435.   teJustCenter  = 1;
  436.   teJustRight   = -1;
  437.  
  438. TYPE
  439.   Chars       = ARRAY [0..32000] OF CHAR;
  440.   CharsPtr    = POINTER TO Chars;
  441.   CharsHandle = POINTER TO CharsPtr;
  442.   
  443.   TERec       = RECORD
  444.     destRect:   Rect;
  445.     viewRect:   Rect;
  446.     selRect:    Rect; (* used from assembly *)
  447.     lineHeight: INTEGER;
  448.     fontAscent: INTEGER;
  449.     selPoint:   Point;
  450.     selStart:   INTEGER;
  451.     selEnd:     INTEGER;
  452.     active:     INTEGER;
  453.     wordBreak:  ADDRESS;    (* ADDRESS of wordBreak Routine*)
  454.     clikLoop:   ADDRESS;    (* ADDRESS of clikLoop Routine *)
  455.     clickTime:  LONGINT;
  456.     clickLoc:   INTEGER;
  457.     caretTime:  LONGINT;
  458.     caretState: INTEGER;
  459.     just:       INTEGER;
  460.     teLength:   INTEGER;
  461.     hText:      Handle;
  462.     recalBack:  INTEGER;
  463.     recalLines: INTEGER;
  464.     clikStuff:  INTEGER;
  465.     crOnly:     INTEGER;
  466.     txFont:     INTEGER;
  467.     txFace:     Style;
  468.     txMode:     INTEGER;
  469.     txSize:     INTEGER;
  470.     inPort:     GrafPtr;
  471.     highHook:   ADDRESS;
  472.     caretHook:  ADDRESS;
  473.     nLines:     INTEGER;
  474.     lineStarts: ARRAY [0..16000] OF INTEGER;
  475.   END;
  476.   TEPtr       = POINTER TO TERec;
  477.   TEHandle    = POINTER TO TEPtr;
  478.  
  479. VAR
  480.     DoubleTime[02F0H]:    LONGINT;
  481.     CaretTime[02F4H]:     LONGINT;
  482.     TEScrpHandle[0AB4H]:  Handle;
  483.     TEScrpLength[0AB0H]:  LONGINT;
  484.  
  485. PROCEDURE TENew(VAR destRect,viewRect:Rect):TEHandle;
  486. (* VAR is for Modula is really by value *)
  487. PROCEDURE TEDispose(hTE:TEHandle);
  488.  
  489. (* Accessing the Text of an Edit Record *)
  490. PROCEDURE TESetText (text:ADDRESS;length:LONGINT;hTE:TEHandle);
  491. PROCEDURE TEGetText (hTE: TEHandle):CharsHandle;
  492.  
  493. (*Insertion Point and Selection Range*)
  494. PROCEDURE TEIdle (hTE:TEHandle);
  495. PROCEDURE TEClick (pt:Point;extend:BOOLEAN;hTE:TEHandle);
  496. PROCEDURE TESetSelect (selStart,selEnd: LONGINT; hTE:TEHandle);
  497. PROCEDURE TEActivate (hTE: TEHandle);
  498. PROCEDURE TEDeactivate (hTE:TEHandle);
  499.  
  500. (* Editing *)
  501. PROCEDURE TEKey (key:CHAR;hTE:TEHandle);
  502. PROCEDURE TECut (hTE:TEHandle);
  503. PROCEDURE TECopy (hTE:TEHandle);
  504. PROCEDURE TEPaste (hTE:TEHandle);
  505. PROCEDURE TEDelete (hTE: TEHandle);
  506. PROCEDURE TEInsert (text:ADDRESS;length:LONGINT;hTE:TEHandle);
  507.  
  508. (* Text Display and Scrolling *)
  509. PROCEDURE TESetJust (just:INTEGER;hTE:TEHandle);
  510. PROCEDURE TEUpdate (VAR rUpdate: Rect; hTE:TEHandle);
  511. PROCEDURE TextBox (text:ADDRESS;
  512.       length:LONGINT;
  513.       VAR box:Rect;
  514.       just:INTEGER);
  515. PROCEDURE TEScroll (dh,dv:INTEGER;hTE:TEHandle);
  516.  
  517. (* Scrap Handling *)
  518. PROCEDURE TEFromScrap():OSErr;
  519. PROCEDURE TEToScrap():OSErr;
  520. PROCEDURE TEScrapHandle():Handle;
  521. PROCEDURE TEGetScrapLen():LONGINT;
  522. PROCEDURE TESetScrapLen(length:LONGINT);
  523.  
  524. (* Advanced Routine *)
  525. PROCEDURE SetWordBreak(wBrkProc:ADDRESS; hTE: TEHandle);
  526. PROCEDURE SetClikLoop(clickProc:ADDRESS; hTE: TEHandle);
  527. PROCEDURE TECalText (hTE:TEHandle);
  528.  
  529. END TextEdit.
  530. !Funky!Stuff!
  531. echo x - Toolbox.DEF
  532. cat >Toolbox.DEF <<'!Funky!Stuff!'
  533. DEFINITION MODULE Toolbox;
  534. (* Cursor routines and constants moved to Cursors       *)
  535. (* GetPic moved to Pictures                             *)
  536. FROM SYSTEM IMPORT ADDRESS;
  537. FROM MacSYSTEM IMPORT LONGINT,Handle,Fixed,Int64Bit,StringHandle;
  538. FROM QuickDraw IMPORT Pattern,Str255,Point,Rect;
  539. EXPORT QUALIFIED
  540. (*CONST*)
  541.     sysPatListID,PatPtr,PatHandle,
  542. (*VAR*)
  543.     ScrVRes,ScrHRes,
  544. (*math*)    
  545.     FixRatio,FixMul,FixRound,
  546. (*strings*)
  547.     NewString,SetString,GetString,GetIndString,
  548. (*byte manipulation*)
  549.     Munger,PackBits,UnpackBits,
  550. (*bit Manipulation*)
  551.     BitTst,BitSet,BitClr,
  552. (*Logical Operations*)
  553.     BitAnd,BitOr,BitXor,BitNot,BitShift,
  554. (*Other Operations on Long Integers*)
  555.     HiWord,LoWord,LongMul,
  556. (* Graphics Utilities *)
  557.     ScreenRes,GetIcon,PlotIcon,GetPattern,GetIndPattern,
  558. (* Miscellaneous Utilities *)
  559.     Random,StuffHex,DeltaPoint,SlopeFromAngle,AngleFromSlope;
  560.  
  561. CONST
  562.     sysPatListID    =   0;
  563.     
  564. TYPE    
  565.     PatPtr = POINTER TO Pattern;
  566.     PatHandle = POINTER TO PatPtr;
  567.  
  568. VAR
  569.     ScrHRes[0104H]:INTEGER;
  570.     ScrVRes[0102H]:INTEGER;
  571.     
  572. PROCEDURE FixRatio(numer,denom:INTEGER):Fixed;
  573. PROCEDURE FixMul(a,b:Fixed):Fixed;
  574. PROCEDURE FixRound(x:Fixed):INTEGER;
  575.  
  576. (*String*)
  577. PROCEDURE NewString(VAR theString:ARRAY OF CHAR):StringHandle;
  578. PROCEDURE SetString(h:StringHandle;VAR theString:ARRAY OF CHAR);
  579. PROCEDURE GetString(StringID:INTEGER):StringHandle;
  580. PROCEDURE GetIndString(VAR theString:ARRAY OF CHAR;strListID:INTEGER;
  581.             index:INTEGER); (* no trap macro *)
  582.  
  583. (*byte manipulation*)
  584. PROCEDURE Munger(h:Handle;offset:LONGINT;ptrl:ADDRESS;len1:LONGINT;
  585.         ptr2:ADDRESS;len2:LONGINT):LONGINT;
  586. PROCEDURE PackBits(VAR srcPtr,dstPtr:ADDRESS; srcBytes:INTEGER);
  587. PROCEDURE UnpackBits(VAR srcPtr,dstPtr:ADDRESS; dstBytes:INTEGER);
  588.  
  589. (*bit Manipulation*)
  590.  
  591. PROCEDURE BitTst(bytePtr:ADDRESS;bitNum:LONGINT):BOOLEAN;
  592. PROCEDURE BitSet(bytePtr:ADDRESS;bitNum:LONGINT);
  593. PROCEDURE BitClr(bytePtr:ADDRESS;bitNum:LONGINT);
  594.  
  595. (*Logical Operations*)
  596.  
  597. PROCEDURE BitAnd(val1,val2:LONGINT):LONGINT;
  598. PROCEDURE BitOr (val1,val2:LONGINT):LONGINT;
  599. PROCEDURE BitXor(val1,val2:LONGINT):LONGINT;
  600. PROCEDURE BitNot(val:LONGINT):LONGINT;
  601. PROCEDURE BitShift(value:LONGINT;count:INTEGER):LONGINT;
  602.  
  603. (*Other Operations on Long Integers*)
  604. PROCEDURE HiWord(x:LONGINT):INTEGER;
  605. PROCEDURE LoWord(x:LONGINT):INTEGER;
  606. PROCEDURE LongMul(a,b:LONGINT;VAR dest:Int64Bit);
  607.  
  608. (* Graphics Utilities *)
  609. PROCEDURE ScreenRes(VAR scrnHRes,scrnVRes:INTEGER);
  610. PROCEDURE GetIcon(iconID:INTEGER):Handle;
  611. PROCEDURE PlotIcon(theRect:Rect;theIcon:Handle);
  612. PROCEDURE GetPattern(patID:INTEGER):PatHandle;
  613. PROCEDURE GetIndPattern(VAR thePattern:Pattern;patListID:INTEGER;
  614.         index:INTEGER); (* no trap macro *)
  615. (* ShieldCursor Left here because of cyclic input *)
  616.  
  617. (* Miscellaneous Utilities *)
  618. PROCEDURE   Random  ():INTEGER;
  619. PROCEDURE   StuffHex    (thingPtr:ADDRESS;VAR s:ARRAY OF CHAR);
  620. PROCEDURE   DeltaPoint(ptA,ptB:Point):LONGINT;
  621. PROCEDURE   SlopeFromAngle(angle:INTEGER):Fixed;
  622. PROCEDURE   AngleFromSlope(slope:Fixed):INTEGER;
  623.  
  624. END Toolbox.
  625. !Funky!Stuff!
  626. echo x - WindowManager.DEF
  627. cat >WindowManager.DEF <<'!Funky!Stuff!'
  628. DEFINITION MODULE WindowManager;
  629. FROM SYSTEM IMPORT ADDRESS,WORD;
  630. FROM MacSYSTEM IMPORT LONGINT,Handle,StringHandle;
  631. FROM QuickDraw IMPORT GrafPort,GrafPtr,Point,VHSelect,Rect,RgnHandle;
  632. FROM Pictures IMPORT PicHandle;
  633. FROM EventManager IMPORT EventRecord;
  634. EXPORT QUALIFIED 
  635. (*CONST*)
  636. (* Window definition procedure IDs *)
  637.     documentProc,dBoxProc,plainDBox,altDBoxProc,noGrowDocProc,
  638.     rDocProc,
  639. (* Types of Windows *)
  640.     dialogKind,userKind,
  641. (* FindWindow result codes *)
  642.     inDesk,inMenuBar,inSysWindow,inContent,inDrag,inGrow,inGoAway,
  643. (* Axis constraints for DragGrayRgn call *)
  644.     noConstraint,hAxsOnly,vAxsOnly,
  645. (* Window Messages *)
  646.     wDraw,wHit,wCalcRgns,wNew,wDispose,wGrow,wDrawGIcon,
  647. (* ... hit test codes *)
  648.     wNoHit,wInContent,wInDrag,wInGrow,wInGoAway,
  649.     deskPatID,
  650. (*TYPE*)
  651.     WindowPtr,WindowPeek,WindowRecord,
  652. (*PROCS*)       
  653.     NewWindow,GetNewWindow,CloseWindow,DisposeWindow,
  654.     SetWTitle,GetWTitle,SetWRefCon,GetWRefCon,
  655.     HideWindow,ShowWindow,ShowHide,
  656.     MoveWindow,
  657.     SizeWindow, 
  658.     FrontWindow,BringToFront,SendBehind,
  659.     HiliteWindow,
  660.     DrawGrowIcon,
  661.     BeginUpdate,EndUpdate,
  662.     InvalRect,InvalRgn,ValidRect,ValidRgn,
  663.     SetWindowPic,GetWindowPic,
  664.     FindWindow,
  665.     SelectWindow,
  666.     DragWindow,GrowWindow,TrackGoAway,
  667.     GetWMgrPort;
  668.  
  669. CONST
  670.     (* Types of Windows *)
  671.     dialogKind      = 2;
  672.     userKind        = 8;
  673.     
  674.     (* Window definition procedure IDs *)
  675.     documentProc        = 0;
  676.     dBoxProc            = 1;
  677.     plainDBox           = 2;
  678.     altDBoxProc     = 3;
  679.     noGrowDocProc   = 4;
  680.     rDocProc            = 16;
  681.     
  682.     (* FindWindow result codes *)
  683.     inDesk          = 0;
  684.     inMenuBar       = 1;
  685.     inSysWindow = 2;
  686.     inContent       = 3;
  687.     inDrag          = 4;
  688.     inGrow          = 5;
  689.     inGoAway        = 6;
  690.  
  691.     (* Axis constraints for DragGrayRgn call *)
  692.     
  693.     noConstraint    = 0;
  694.     hAxsOnly        = 1;
  695.     vAxsOnly        = 2;
  696.     
  697.     (* Window Messages *)
  698.     wDraw           = 0;
  699.     wHit            = 1;
  700.     wCalcRgns       = 2;
  701.     wNew            = 3;
  702.     wDispose        = 4;
  703.     wGrow           = 5;
  704.     wDrawGIcon  = 6;
  705.     
  706.     (* ... hit test codes *)
  707.     wNoHit              = 0;
  708.     wInContent          = 1;
  709.     wInDrag         = 2;
  710.     wInGrow         = 3;
  711.     wInGoAway       = 4;
  712.  
  713.     (* Resource ID of desktop pattern *)
  714.     deskPatID           =   16;
  715.  
  716.     TYPE
  717.         WindowPtr       = GrafPtr;
  718.         WindowPeek  = POINTER TO WindowRecord;
  719.         WindowRecord    = RECORD
  720.             port:           GrafPort;   (* Graphics port for this window *)
  721.             windowKind:     INTEGER;    (* Window Class *)
  722.             visible:                BOOLEAN;
  723.             hilited:                BOOLEAN;
  724.             goAwayFlag:     BOOLEAN;
  725.             spareFlag:      BOOLEAN;
  726.             strucRgn:       RgnHandle;  (* Handle to structure region *)
  727.             contRgn:        RgnHandle;  (* Handle to content region *)
  728.             updateRgn:      RgnHandle;  (* Handle to update region *)
  729.             windowDefProc:  Handle; (* Handle to Window Definition
  730.                      * function
  731.                      *)
  732.             dataHandle: Handle; (* Handle to definition function's
  733.                  * data
  734.                  *)
  735.             titleHandle:    StringHandle;(*Handle to window's title *)
  736.             titleWidth:     INTEGER;    (* Private *)
  737.             controlList:    Handle;
  738.             nextWindow: WindowPeek;
  739.             windowPic:      PicHandle;
  740.             refCon:     LONGINT
  741.         END;
  742.             
  743.     PROCEDURE NewWindow(wStorage:ADDRESS;
  744.             VAR windowRect:     Rect;
  745.             VAR title:      ARRAY OF CHAR;
  746.             visible:        BOOLEAN;
  747.             windowType:     INTEGER;
  748.             behindWindow:   WindowPtr;
  749.             hasClose:       BOOLEAN;
  750.             refCon:         LONGINT):WindowPtr;
  751.     PROCEDURE GetNewWindow(templateID:INTEGER;
  752.             wStorage:       ADDRESS;
  753.             behindWindow:   WindowPtr):WindowPtr;
  754.     PROCEDURE CloseWindow(theWindow:WindowPtr);
  755.     PROCEDURE DisposeWindow(theWindow:WindowPtr);
  756.     
  757.     PROCEDURE SetWTitle(theWindow:WindowPtr;VAR newTitle:ARRAY OF CHAR);
  758.     PROCEDURE GetWTitle(theWindow:WindowPtr;VAR theTitle:ARRAY OF CHAR);
  759.     
  760.     PROCEDURE SetWRefCon(theWindow:WindowPtr;newRefCon:LONGINT);
  761.     PROCEDURE GetWRefCon(theWindow:WindowPtr):LONGINT;
  762.     
  763.     PROCEDURE HideWindow(theWindow:WindowPtr);
  764.     PROCEDURE ShowWindow(theWindow:WindowPtr);
  765.     PROCEDURE ShowHide(theWindow:WindowPtr;showFlag:BOOLEAN);
  766.     
  767.     PROCEDURE MoveWindow(theWindow: WindowPtr;
  768.             hGlobal,vGlobal:        INTEGER;
  769.             active:                 BOOLEAN);
  770.     
  771.     PROCEDURE SizeWindow
  772.             (theWindow:             WindowPtr;
  773.              newWidth,newHeight:    INTEGER;
  774.              update:                BOOLEAN);
  775.              
  776.     PROCEDURE FrontWindow():WindowPtr;
  777.     PROCEDURE BringToFront(theWindow:WindowPtr);
  778.     PROCEDURE SendBehind(theWindow:WindowPtr;behindWindow:WindowPtr);
  779.     
  780.     PROCEDURE HiliteWindow(theWindow:WindowPtr;onOrOff:BOOLEAN);
  781.     
  782.     PROCEDURE DrawGrowIcon(theWindow:WindowPtr);
  783.     
  784.     PROCEDURE BeginUpdate(theWindow:WindowPtr);
  785.     PROCEDURE EndUpdate(theWindow:WindowPtr);
  786.     
  787.     PROCEDURE InvalRect(VAR badRect:Rect);
  788.     PROCEDURE InvalRgn(badRegion:RgnHandle);
  789.     PROCEDURE ValidRect(VAR goodRect:Rect);
  790.     PROCEDURE ValidRgn(goodRegion:RgnHandle);
  791.     
  792.     PROCEDURE SetWindowPic (theWindow:WindowPtr;thePicture:PicHandle);
  793.     PROCEDURE GetWindowPic(theWindow:WindowPtr):PicHandle;
  794.     
  795.     PROCEDURE FindWindow(MousePoint:Point;VAR theWindow:WindowPtr):INTEGER;
  796.     
  797.     PROCEDURE SelectWindow(theWindow:WindowPtr);
  798.         
  799.     PROCEDURE DragWindow
  800.             (theWindow:WindowPtr;
  801.              startPoint:Point;
  802.              LimitRect:Rect);
  803.     PROCEDURE GrowWindow
  804.             (theWindow:     WindowPtr;
  805.              startPoint:    Point;
  806.              sizeRect:      Rect):LONGINT;
  807.     PROCEDURE TrackGoAway(wind:WindowPtr;start:Point):BOOLEAN;
  808.     
  809.     PROCEDURE GetWMgrPort(VAR wMgrPort:GrafPtr);
  810.  
  811. END WindowManager.
  812. !Funky!Stuff!
  813. /* End of text from uiucdcsb:net.sources.mac */
  814.